Trivyの脆弱性スキャン結果をFutureVulsに連携してみた(CLI編)
Trivy は OSS のコンテナ脆弱性スキャンツールで、コンテナの OS パッケージやアプリケーションの依存ライブラリの脆弱性を検出します。
脆弱性管理ツールの FutureVuls に Trivy でスキャンした結果を連携し、FutureVuls でコンテナの脆弱性管理をしてみます。
環境
以下の環境で実行しています。
- Amazon Linux2
- Docker version 19.03.6-ce, build 369ce74
やってみた
trivy をインストールします。
$ export TRIVY_VERSION=0.10.0
$ wget https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz
$ mkdir trivy && tar zxvf trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz -C trivy
trivy-to-vuls をインストールします。trivy-to-vuls では trivy のスキャン結果を vuls のレポート形式に変換しています。
$ export VULS_VERSION=0.10.0
$ wget https://github.com/future-architect/vuls/releases/download/v${VULS_VERSION}/trivy-to-vuls_${VULS_VERSION}_linux_amd64.tar.gz
$ mkdir trivy-to-vuls && tar zxvf trivy-to-vuls_${VULS_VERSION}_linux_amd64.tar.gz -C trivy-to-vuls
future-vuls をインストールします。
$ export VULS_VERSION=0.10.0
$ wget https://github.com/future-architect/vuls/releases/download/v${VULS_VERSION}/future-vuls_${VULS_VERSION}_linux_amd64.tar.gz
$ mkdir future-vuls && tar zxvf future-vuls_${VULS_VERSION}_linux_amd64.tar.gz -C future-vuls
スキャン用のコンテナを用意します。今回は Alpine Linux をスキャンしてみます。
FROM alpine:3.4
$ docker build -t alpine .
続いて、以下の環境変数を設定します。
- FVULS_SERVER_UUID
- FVULS_GROUP_ID
- FVULS_TOKEN
FVULS_SERVER_UUID
は、FutureVuls で使用するサーバー ID(サーバーを一意に特定するための UUID)を設定します。ここでは uuidgen
コマンドでサーバー ID を生成しています。
$ uuidgen && fvuls_server_uuid
$ export FVULS_SERVER_UUID=`cat fvuls_server_uuid`
FVULS_GROUP_ID
は、FutureVuls のグループ ID を設定します。グループ ID は管理画面の URL から確認できます。
$ export FVULS_GROUP_ID=xxx
FVULS_TOKEN
は、FutureVuls のスキャントークンを設定します。管理画面のグループ設定 > トークンから確認します。
$ export FVULS_TOKEN=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Trivy でスキャンし、FutureVuls にスキャン結果をアップロードします。
$ ./trivy/trivy -q image -f=json alpine | \
./trivy-to-vuls/trivy-to-vuls parse --stdin | \
./future-vuls/future-vuls upload --stdin \
--url ${FVULS_AUTH_URL} \
--group-id ${FVULS_GROUP_ID} \
--token ${FVULS_TOKEN} \
--uuid ${FVULS_SERVER_UUID}
FutureVuls で結果がアップロードされていることを確認します。
[サーバ]タブをクリックすると、コンテナの情報が登録されています。
[脆弱性]タブをクリックし、該当する脆弱性の一覧が表示されました!
さいごに
Trivy のコンテナの脆弱性スキャンして結果を FutureVuls に取り込んでみました。
サーバーだけでなくコンテナの脆弱性も簡単に管理できることがわかりました。
今回は CLI 上で行いましたが、実際の運用では CI/CD パイプラインに組み込んで使われるケースがほとんどと思います。次は CI/CD パイプラインに組み込んだパターンも試してみたいと思います。